extends Node

# ==========================游戏层===============================

# 初始化方法
func _ready():
	show_home()
	Music_audio.play()
	pass

# 主要控制方法
func main():
	var option:Array
	var text:Array
	# 对话框实现
	if time_load == 0:
		move_scene('scene/room.png')
		move_music(true, "music/最后的图灵.ogg")
		text = [
			'>介绍','hide',
			'欢迎使用godot-EzGal',
			'这是一个基于godot3的快速实现galgame的框架',
			'请问需要我帮助介绍些什么?'
		]
		show_dialog(text)
	
	# 选项实现
	if time_load == 1:
		option = [
			'介绍一下EzGal',
			'当前情况',
			'使用'
		]	
		show_choose(option)
	
	# 第二部分对话框
	if time_load == 2:
		time_load = 0
		text = ['>看板娘','right','girl/girl_sanwu.png',
				'你好,我是VYCMa的看板娘',
				'在<少女坠入地狱>中扮演"少女"角色',
				'以下请让我来为您介绍EzGal',
		]
		# 当选择第一个选项时
		if global.option_number == 0:
			text += [
				'EzGal使用类似python(在godot3中)的gdscript语言编写',
				'为了追求方便开发, 我们损失掉了部分开发优势',
				'这让不修改框架时开发起来更加容易',
				'你几乎可以仅靠编辑res://script/main.gd的main函数完成开发',
				'同时godot是一个非常简便易用的引擎',
				'我们分享了所有框架代码',
				'你可以快速将框架调整成自己期望的样子',
			]
		
		# 当选择第二个选项时
		elif global.option_number == 1:
			text += [
				'当前EzGal只实现了基础功能:',
				'角色对话框,选项,场景转换',
				'其他功能还在完善中',
				'好处是审计代码将更加容易',
				'之后我们将尝试在不复杂开发流程的基础上优化效果',
				'还有UI设置等基础功能'
			]
		
		# 选择第三个选项
		elif global.option_number == 2:
			time_load = 2
			text += [
				'EzGal极其依赖Array类型',
				'我们可以在res://script/main.gd进行编辑',
				'首先尝试修改角色名',
				'>看板娘的新名字','right','girl/girl_sanwu.png',
				'由前面的">"进行识别',
				'后面跟随立绘位置和立绘地址',
				'位置部分参见下方的show_role函数',
				'>看板娘的新名字','hide',
				'其中"hide"关键词将直接隐藏所有立绘',
				'>看板娘','left_only','girl/girl_sanwu.png',
				'现在让我们来介绍切换场景',
				'场景图片和图片都应该放置在res://img文件夹内',
				'修改场景需要在show_dialog结束后再次调用'
			]
		show_dialog(text)
	if time_load == 3:
		show_choose(['钢琴室'])
		move_scene('scene/piano_room.png')
	if time_load == 4:
		text = [
			'>看板娘','left_only','girl/girl_sanwu.png',
			'修改场景可以直接调用show_dialog函数',
			'show_dialog函数在底层逻辑部分',
			'方便对图片进行批量加工',
			'可以直接load图片',
			'但是可能存在一些bug',
			'你需要修改全局变量保证存档不会出问题'
		]
		show_dialog(text)
	if time_load == 5:
		show_choose(['房间'])
		room.texture = load("res://img/scene/room.png")
		global.scene_path = "scene/room.png"
	if time_load == 6:
		time_load = 0
		text = [
			'>看板娘','right_only','girl/girl_sanwu.png',
			'接下来我们介绍参数',
			'重要参数我们放置在res://script/global.gd文件中',
			'可以直接对参数进行调整',
			'在res://的各个文件中',
			'img用于放置图片',
			'scene用于放置场景',
			'script用于放置脚本',
			'sounds/FX用于放置音效',
			'theme用于修改主题',
			'包括UI样式,字体样式',
			'我们会在文档中进行详细说明'
		]
		show_dialog(text)
	

# ===========================变量层=====================================

var the_dialog
var the_choose
var time_load:int = 0
var load_path

const dialog = preload('res://scene/dialog.tscn')
const choose = preload('res://scene/choose.tscn')
var home = preload('res://scene/home.tscn').instance()

onready var room = $Room
onready var timer = $Timer
onready var role_left = $Role_left
onready var role_right = $Role_right
onready var UI_audio = $UI_Audio
onready var Music_audio = $Music_Audio

# ==========================底层逻辑部分=================================

# 展示对话框
func show_dialog(text:Array):
	the_dialog = dialog.instance()
	the_dialog.text = text
	add_child(the_dialog)
	pass

# 展示选项
func show_choose(option:Array):
	the_choose = choose.instance()
	the_choose.options = option
	add_child(the_choose)
	pass
	
# 界面展示
func show_home():
	add_child(home)
	pass

# 角色控制方法
func show_role(position, path):
	load_path = load("res://img/" + path)
	if position == "left_only":
		global.left_role_path = "res://img/" + path
		global.right_role_path = "hide"
		role_right.hide()
		role_left.show()
		role_left.texture = load_path
	elif position == "right_only":
		global.left_role_path = "hide"
		global.right_role_path = "res://img/" + path
		role_left.hide()
		role_right.show()
		role_right.texture = load_path
	elif position == "left":
		global.left_role_path = "res://img/" + path
		role_left.show()
		role_left.texture = load_path
	elif position == "right":
		global.right_role_path = "res://img/" + path
		role_right.show()
		role_right.texture = load_path
	pass

# 修改文件
func move_scene(path:String):
	room.texture = load("res://img/" + path)
	global.scene_path = path
	pass
	
# 修改音频
func move_music(is_play:bool, path:String):
	if is_play:
		Music_audio.stream = load("res://sounds/"+path)
		Music_audio.play()
		global.music_path = "1[&]" + path
	else:
		Music_audio.stop()
		global.music_path = "0[&]" + path
	pass
